#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <conio.c>
#include <time.h>


typedef struct space
{
 	  typedef struct tiro{
	  		  int xt, yt;
	  		  bool btiro;
			  };
	   
	  char invader[20][60];
      tiro vetor_tiro[11];
	  int x,y,i;
      char tecla;
      void campo();
      void movimentar_direita ();
      int movimentar_esquerda();
      int teclas ();
      int atira ();  
      int invaders ();
	  
	  
};

void space::campo()
{
     
	 int c;
     x=30;
     y=19; 
     
     
	 for(i=0 ; i <= 10 ; i++){
	 		 vetor_tiro[i].btiro = false;

			  }
	 
	 
	 
	  for (c=0;c<60;c++)
      {
          gotoxy (c,0);
          printf("%c", 178);
      }   
      for (c=2;c<=20;c++)
      {
          gotoxy (60,c);
          printf("%c", 178);
      }    
      for (c=2;c<22;c++)
      {
          gotoxy (1,c);
          printf("%c", 178);
      }
      for (c=0;c<=60;c++)
      {
          gotoxy (c,21);
          printf("%c", 178);
      }       
}      


int space::invaders ()
{    
     
     char d,e,f,g,h;
     
     e=5;
     f=3;
     
     for (int i=0;i<20;i++){
	 	 for (int j=0;j<60;j++){
         	 invader[i][j]=' ';
 		 }
     }
     for (d=5;d<59;d=d+4){
	 	 for (g=4;g<58;g=g+5){
		 	 invader[e][d]='#';
             invader[f][g]='#';
	}
                          }
     for (int i=0;i<20;i++){
     	 for (int j=0;j<60;j++){
         	 printf("%c",invader[i][j]);
 		 }
    	 printf("\n");
     }
     

}


	 

int space::teclas ()
{
    if (kbhit ())
    {
        tecla = getch ();                            // a = 97 d = 100 w = 119 exc 27

 		switch (tecla) 
 		{
	 	   case 'a':
           		if (x==2){
                   gotoxy(2,y);
                   printf("x");        
                }                
                else{
                	 gotoxy(x,y);
                     printf(" ");
                     x--;
                     gotoxy(x,y);
                     printf("x");
                }
                break;
                
                case 'd':
                	 if (x==59 ){
                     	gotoxy(59,y);
                        printf("x");
              		 }
                     else{
                     	  gotoxy(x,y);
                          printf(" ");
                          x++;
                          gotoxy(x,y);
                          printf("x");
                          }                
                     break;
                
                case 'w':
					for (i=0 ; i <= 10 ; i++){
						  if (vetor_tiro[i].btiro == false){
		  	   			  	  vetor_tiro[i].btiro = true;
							  vetor_tiro[i].xt=x;
                   			  vetor_tiro[i].yt=y-2;
							  break;
							  
						  	}
	  			    }
               	    while (vetor_tiro[i].btiro == true){
 						for (i=0 ; i <= 10 ; i++)
			  			{
						 	if(vetor_tiro[i].btiro == true){
						         while(  vetor_tiro[i].yt >= 2){
								    if(vetor_tiro[i].yt > 2){
				    			        gotoxy(vetor_tiro[i].xt,vetor_tiro[i].yt);
                            	        printf("|");
                            	        gotoxy(vetor_tiro[i].xt,vetor_tiro[i].yt+1);
                            	        printf(" ");
                            	        _sleep(50);
                            	        vetor_tiro[i].yt--;
								   
								        if (invader[vetor_tiro[i].yt][vetor_tiro[i].xt-5]=='#') {
                                           invader[vetor_tiro[i].yt][vetor_tiro[i].xt-5]=' ';
                                	       gotoxy(vetor_tiro[i].xt,vetor_tiro[i].yt+1);
                                	       printf(" ");
                                	    
										   vetor_tiro[i].btiro=false;
	 								    }
								    } 
								                     
							    if(vetor_tiro[i].yt==2){
      		   	                    gotoxy(vetor_tiro[i].xt,vetor_tiro[i].yt);
                            	    printf(" ");
                            	    gotoxy(vetor_tiro[i].xt,vetor_tiro[i].yt+1);
                            	    printf(" ");
                            	    vetor_tiro[i].btiro = false;
								    vetor_tiro[i].yt--;
   							    }
								teclas (); 
 	              	     }
                 	
           		    }			
					
					break;
         }//fecha switch
     }//fecha kbhit
} 
}
}
int main()
{

    space i;
    i.invaders();
    i.campo();// borda do campo
    gotoxy(30,19);
    printf("x");
    int enemy= 18;
    while(enemy!=0)
    {
	    i.teclas(); 
    }

system("pause");
    
}
